<?php

namespace XWAM\Controller;

/**
 * 控制器基础类
 * 
 * @since 1.0 <2015-3-18> SoChishun <14507247@qq.com> Added.
 */
abstract class AppbaseController extends \Common\Controller\CommonController {

    /**
     * 空操作，用于输出404页面
     * @since 1.0 <2015-3-23> SoChishun Added.
     */
    public function _empty() {
        $this->display('XPage/404');
    }

    public function _initialize() {
        // 站点是否关闭检测
        C('USER.WEB_SITE_STATUS') || exit(C('USER.CLOSED_ANNOUNCEMENT'));
        
        // 检测系统环境
        D('SysEnv')->check();

        // 用户登录检测
        $is_login = user_check_login($this->user_login_data);
        // 页面刷新的时候刷新用户登录信息,以同步个人资料编辑 2016-2-15 SoChishun Added.
        if ($is_login) {
            $status = D('Addon://POrgUser/Login')->refresh_login_info($this->user_login_data);
            if (true === $status) {
                session(C('USER.SESSION_ID'), $this->user_login_data);
            } else if ('E_ACCOUNT_DISABLED' == $status) {
                E('帐户已禁用!');
            }
        }
        // 合并数据库配置内容到主配置文件中 2015-10-20 SoChishun Added.
        C('VARCONF', D('Addon://POrgSystem/Config')->c());
        if (!$is_login) {
            $url = C('VARCONF.LOGIN_URL');
            if (!$url) {
                E('插件主配置-登录设置无效!');
            }
            redirect($url);
        }

        // 更新用户在线统计
        //D('Login')->active_online_state($this->user_login_data['id']);
        // 全局模板变量赋值
        //$this->assign('menu_url', U('Menu/get_user_menu', 'addon=PXCallSystem'));
        // 用户资料补充
        if ('SEAT' == $this->user_login_data['type_name']) {
            $seat_data = D('Addon://POrgUser/UserSeat')->find_seat($this->user_login_data['id']);
            $screenpopup_mode = ($seat_data && $seat_data['screenpopup_mode']) ? $seat_data['screenpopup_mode'] : C('VARCONF.SCREENPOP_MODE');
            $this->assign('SCREENPOPUP_MODE', $screenpopup_mode);
        }
        // 用户登录资料
        $this->assign('login_data', $this->user_login_data);
        // 主菜单资料
        $this->assign('menuset', D('Rule')->get_menus());
    }

    /**
     * 获取用户登录信息的值
     * @param string $name 名称
     * @return mixed
     * @since VER:1.0; DATE:2016-1-18; AUTHOR:SoChishun; DESC:Added.
     */
    public function __get($name) {
        if (0 === strpos($name, 'login_')) {
            $name = substr($name, 6);
            return isset($this->user_login_data[$name]) ? $this->user_login_data[$name] : null;
        }
        return null;
    }

    /**
     * 通用框架结果(对话框刷新父页面)
     * @param boolean $status 结果状态
     * @param string|array $error 错误消息
     * @param string $success 成功消息
     * @since 1.0 <2015-10-27> SoChishun Added.
     */
    function dialogJump($status, $error = '保存失败!', $success = '保存成功!') {
        if ($status) {
            $this->success($success, '!window.parent.location.reload();', 1);
        } else {
            $this->error(is_array($error) ? implode('<br />', $error) : $error);
        }
    }

    /**
     * 通用框架结果(对话框关闭,不刷新父页面)
     * @param boolean $status 结果状态
     * @param string|array $error 错误消息
     * @param string $success 成功消息
     */
    function dialogClose($status, $error = '保存失败!', $success = '保存成功!') {
        if ($status) {
            $this->success($success, '!$(\'iframe[name="\' + window.name + \'"]\').attr(\'src\', "about:blank").parent().dialog(\'close\');');
        } else {
            $this->error(is_array($error) ? implode('<br />', $error) : $error);
        }
    }

}
